//package com.xls.commonlibrary.ad.adn.reward.util;
//
//import static com.xls.commonlibrary.constant.Const.INTENT_KEY_AD_TYPE;
//import static com.xls.commonlibrary.constant.Const.INTENT_KEY_AD_VALUE;
//import static com.xls.commonlibrary.util.eventbus.ConstEventBus.EVENT_AD_INIT_SUCCESS;
//
//import androidx.appcompat.app.AppCompatActivity;
//
//import com.orhanobut.logger.Logger;
//import com.xls.commonlibrary.ad.adn.baidu.BdAdUtil;
//import com.xls.commonlibrary.ad.adn.gm.GMRewardUtil;
//import com.xls.commonlibrary.ad.adn.ks.KsAdUtil;
//import com.xls.commonlibrary.ad.adn.tx.reward.TxRewardUtil;
//import com.xls.commonlibrary.bean.UpdateEcpmResult;
//import com.xls.commonlibrary.http.Api;
//import com.xls.commonlibrary.http.Result;
//import com.xls.commonlibrary.http.RetrofitHelper;
//import com.xls.commonlibrary.http.exception.ThrowableUtil;
//import com.xls.commonlibrary.util.AdSetCacheUtil;
//import com.xls.commonlibrary.util.eventbus.MessageEvent;
//import com.xls.commonlibrary.util.SysDataUtil;
//import com.xls.commonlibrary.util.encrypt.EncryptUtil;
//
//import org.greenrobot.eventbus.EventBus;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//
//import javax.annotation.Nonnull;
//
//import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
//import io.reactivex.rxjava3.annotations.NonNull;
//import io.reactivex.rxjava3.core.Observable;
//import io.reactivex.rxjava3.core.ObservableSource;
//import io.reactivex.rxjava3.core.Observer;
//import io.reactivex.rxjava3.disposables.Disposable;
//import io.reactivex.rxjava3.functions.Function;
//import io.reactivex.rxjava3.schedulers.Schedulers;
//
//public class EcpmUtil {// 补ecpm工具类
//
//    // 最多取4家广告ecpm，然后传给服务器
//    // 4 obs          1 ob
//
//    // todo 无广告返回 一定要返回 ecpm = -1 给服务器
//
//
//    private static volatile EcpmUtil singleton = null;
//
//    private EcpmUtil() {
//    }
//
//    public static EcpmUtil getInstance() {
//        if (singleton == null) {
//            synchronized (EcpmUtil.class) {
//                if (singleton == null) {
//                    singleton = new EcpmUtil();
//                }
//            }
//        }
//        return singleton;
//    }
//
//
//    // test 1 ob
////    public void get1(@Nonnull Activity activity) {
////        KsAdUtil.getInstance(activity).showKsAd(false,s -> {
////            Logger.d("========o3====ecpm============");
////            Logger.d(s);
////            Map<String, String> p = new HashMap<>();
////            p.put(Const.TYPE_KS, s);
////        });
////    }
//
//    // 获取4家广告ecpm，  Gromore必须展示完了广告才能获取其ecpm
//    public void get4Ecpm(@Nonnull AppCompatActivity activity, @Nonnull Set<String> editList) {
////        Map<String, String> params = new HashMap<>();
//
//        // 4 ads
//        Observable<Map<String, String>> o1 = Observable.create(emitter -> {
//
//            // todo ad util get ecpm then use callback{  emitter.onNext or onComplete}
////            GromoreUtilOLDNotUseAnyMore.getInstance(activity).showGMAd(s -> {
////                Logger.d("============ecpm====o1========");
////                Logger.d(s);
////                Map<String, String> p = new HashMap<>();
////                p.put(INTENT_KEY_AD_TYPE, "csj");// key参数值 需要后台统一
////                p.put(INTENT_KEY_AD_VALUE, s);// ob 过滤使用
////                emitter.onNext(p);
////                emitter.onComplete();
////            });
//
//
//            // 接口返回的获取ecpm的厂家
//            // 不应该有穿山甲
//            // 不应该有穿山甲
//            // 不应该有穿山甲
//
//            GMRewardUtil.getInstance().loadReward(activity, s -> {
//                Logger.d("============ecpm====o1========");
//                Logger.d(s);
//                Map<String, String> p = new HashMap<>();
//                p.put(INTENT_KEY_AD_TYPE, "csj");// key参数值 需要后台统一
//                p.put(INTENT_KEY_AD_VALUE, s.getEcpm());// ob 过滤使用
//                emitter.onNext(p);
//                emitter.onComplete();
//            });
//
//
//        });
//        Observable<Map<String, String>> o2 = Observable.create(emitter -> {
//
//            TxRewardUtil.getInstance(activity).showTxAd(false, s -> {
//                Logger.d("============ecpm====o2========");
//                Logger.d(s);
//                Map<String, String> p = new HashMap<>();
//                p.put(INTENT_KEY_AD_TYPE, "tx");
//                p.put(INTENT_KEY_AD_VALUE, s);// ob 过滤使用
//                emitter.onNext(p);
//                emitter.onComplete();
//            });
//
//        });
//        Observable<Map<String, String>> o3 = Observable.create(emitter -> {
//
//            // todo ks手机权重不够，就会没广告 ecpm返回-1
//            KsAdUtil.getInstance(activity).showKsAd(false, s -> {
//                Logger.d("============ecpm====o3========");
//                Logger.d(s);
//                Map<String, String> p = new HashMap<>();
//                p.put(INTENT_KEY_AD_TYPE, "ks");
//                p.put(INTENT_KEY_AD_VALUE, s);// ob 过滤使用
//                emitter.onNext(p);
//                emitter.onComplete();
//            });
//
//        });
//        Observable<Map<String, String>> o4 = Observable.create(emitter -> {
//
//            BdAdUtil.getInstance(activity).showBdAd(false, s -> {
//                Logger.d("============ecpm====o4========");
//                Logger.d(s);
//                Map<String, String> p = new HashMap<>();
//                p.put(INTENT_KEY_AD_TYPE, "bd");
//                p.put(INTENT_KEY_AD_VALUE, s);// ob 过滤使用
//                emitter.onNext(p);
//                emitter.onComplete();
//            });
//        });
//
//        List<Observable<Map<String, String>>> list = new ArrayList<>();
//
//        // 按照  服务器 add即可
//        for (String ad : editList) {
//            if ("csj".equals(ad)) {
//                list.add(o1);
//            } else if ("tx".equals(ad)) {
//                list.add(o2);
//            } else if ("ks".equals(ad)) {
//                list.add(o3);
//            } else if ("bd".equals(ad)) {
//                list.add(o4);
//            }
//        }
//
//        if (list.size() < 1) return;
//
//        // 每个单独上传即可
//        Observable.concatDelayError(list)
//                .subscribeOn(AndroidSchedulers.mainThread())// 广告sdk得在主线程 别ANR哈
//
////                .filter(new Predicate<Map<String, String>>() {
////                    // 过滤掉  ecpm是-1 的
////                    @Override
////                    public boolean test(Map<String, String> map) throws Throwable {
////                        String ecpm = map.get(INTENT_KEY_AD_VALUE);
////                        Logger.d("============filter====test========ecpm:" + ecpm);
////                        return !"-1".equals(ecpm);//只有通过测试的数据才会被发射。
////                    }
////                })
//
//                .flatMap((Function<Map<String, String>, ObservableSource<Result<UpdateEcpmResult>>>) map -> {
//                    Logger.d("=======flatMap====ecpm============");
//                    Logger.d(map);
//
//                    // 拼接参数，调服务器接口
//                    Map<String, String> p = new HashMap<>();
//                    p.put("appName", SysDataUtil.getInstance().getPkName());
//                    p.put("companyName", map.get(INTENT_KEY_AD_TYPE));
//                    //p.put("ecmpCompanyPrice", map.get(INTENT_KEY_AD_VALUE));
//                    p.put("xls", EncryptUtil.aesEncrypt(map.get(INTENT_KEY_AD_VALUE)));
//
//                    // todo 调接口
//                    return RetrofitHelper.getInstance().create(Api.class).updateEcpm(p);
//                })
//                .subscribeOn(Schedulers.io())// 调接口 io线程
//
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Observer<Result<UpdateEcpmResult>>() {
//                    @Override
//                    public void onSubscribe(@NonNull Disposable d) {
//
//                        Logger.d("=======onSubscribe====ecpm============");
//                    }
//
//                    @Override
//                    public void onNext(@NonNull Result<UpdateEcpmResult> result) {
//                        Logger.d("=======onNext====ecpm============" + result);
//
//
//                        if (result.getCode() == 1) {
//                            // update 2 sets
//                            AdSetCacheUtil.getInstance().saveEditList(result.getData().getEditList());
//                            AdSetCacheUtil.getInstance().savePlayList(result.getData().getPlayList());
//                        } else {
//
//                        }
//
//                        // sendSuccessEvent();// 会多次执行的
//
//                    }
//
//                    @Override
//                    public void onError(@NonNull Throwable e) {
//                        Logger.d("=======onError====ecpm============");
//
//                        ThrowableUtil.getInstance().handleThrowable(e);
//                        sendSuccessEvent();
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                        Logger.d("=======onComplete====ecpm============");
//
//                        sendSuccessEvent();
//
//                    }
//                });
//
//    }
//
//    void sendSuccessEvent() {
//
//        Logger.d("=======sendSuccessEvent====跳入游戏页面========ecpm============");
//        // 完成初始化，跳入游戏页面
//        EventBus.getDefault().post(new MessageEvent(EVENT_AD_INIT_SUCCESS, "go to game"));
//    }
//
//}
